// Créé avec XmlCppClassGenerator version 2.0 beta.

#include "ConstruitRepresentationMonstre.hpp"

#include "TraitementRequete.hpp"
#include "StructureDonnees.hpp"

ConstruitRepresentationMonstre::ConstruitRepresentationMonstre( const QString& agence,
                                                                const QString& mdp,
                                                                const QString& contenu, QObject* parent )
    : BaseConstruitRepresentation( agence, mdp, contenu, parent ),
      InfosMonstres( )
{}

ConstruitRepresentationMonstre::~ConstruitRepresentationMonstre()
{}

void ConstruitRepresentationMonstre::chargeInformations( const QString& )
{
    if ( RecuperateurContenu != 0 )
    {
        delete RecuperateurContenu;
        RecuperateurContenu = 0;
    }
    RecuperateurContenu = new TraitementRequete( Contenu, Agence, MotDePasse,
                                                 this );

    connect( RecuperateurContenu,
             SIGNAL( envoieTexte( const StructureDonnees* ) ),
             this, SLOT( construitInfoInstance( const StructureDonnees* ) ) );
}

const QHash< unsigned, XmlInfoMonstre* >& ConstruitRepresentationMonstre::infosMonstres() const
{
    return InfosMonstres;
}


const QHash< unsigned, XmlInfoMonstre* >* ConstruitRepresentationMonstre::infosMonstresPtr() const
{
    return &InfosMonstres;
}


void ConstruitRepresentationMonstre::construitInfoInstance( const StructureDonnees* info )
{
    construitInfoMonstres( info );
}

void ConstruitRepresentationMonstre::construitInfoMonstres( const StructureDonnees* info )
{
    if ( ! InfosMonstres.empty() )
    {
        qDeleteAll( InfosMonstres.begin(), InfosMonstres.end() );
        InfosMonstres.clear();
    }

    int nbrMonstres( info -> nombreElements( "monster" ) ), i;

    const QHash< QString, QString >* hashInfos;
    XmlInfoMonstre * monstre;

    for ( i = 0; i < nbrMonstres; i++ )
    {
        hashInfos = info -> listeAttributs( "monster", i );
        monstre = new XmlInfoMonstre( XmlInfoMonstre::creeInstance( Contenu,
                                                                    hashInfos ) );
        InfosMonstres.insert( monstre -> identification(), monstre );
    }

    emit( infosPretes() );
}

